from datetime import datetime

def advanced_time_calculator():
    """进阶版时间间隔计算器：支持完整日期时间，含异常处理"""
    print("=== 进阶版时间间隔计算器 ===")
    print("请按格式输入时间：YYYY-MM-DD HH:MM:SS（例如：2024-10-01 17:10:00）")
    
    # 定义时间格式（与输入匹配）
    time_format = "%Y-%m-%d %H:%M:%S"
    
    while True:
        try:
            # 1. 输入并解析起始时间
            start_str = input("\n请输入起始时间：")
            start_time = datetime.strptime(start_str, time_format)  # 转换为datetime对象
            
            # 2. 输入并解析结束时间
            end_str = input("请输入结束时间：")
            end_time = datetime.strptime(end_str, time_format)  # 转换为datetime对象
            
            # 3. 计算时间间隔（timedelta对象）
            time_delta = end_time - start_time
            if time_delta.total_seconds() < 0:
                # 处理结束时间早于起始时间的情况（自动交换并提示）
                start_time, end_time = end_time, start_time
                time_delta = end_time - start_time
                print("⚠️  注意：结束时间早于起始时间，已自动交换计算")
            
            # 4. 转换为“天-小时-分钟-秒”格式（更直观）
            total_seconds = time_delta.total_seconds()
            days = int(total_seconds // 86400)  # 1天=86400秒
            hours = int((total_seconds % 86400) // 3600)  # 1小时=3600秒
            minutes = int((total_seconds % 3600) // 60)  # 1分钟=60秒
            seconds = int(total_seconds % 60)
            
            # 5. 格式化输出结果
            print(f"\n✅ 时间间隔详情：")
            print(f"起始时间：{start_time.strftime(time_format)}")
            print(f"结束时间：{end_time.strftime(time_format)}")
            print(f"间隔：{days}天 {hours}小时 {minutes}分钟 {seconds}秒")
            
            # 询问是否继续计算
            continue_flag = input("\n是否继续计算？（输入 y 继续，其他键退出）：").lower()
            if continue_flag != "y":
                print("👋 感谢使用，再见！")
                break
        
        except ValueError:
            # 捕获输入格式错误（如“2024/10/01”“17:10”等不符合格式的输入）
            print("❌ 输入错误！请严格按照格式“YYYY-MM-DD HH:MM:SS”输入（例如：2024-10-01 17:10:00）")
        except Exception as e:
            # 捕获其他未知错误
            print(f"❌ 程序异常：{str(e)}，请重试")

# 启动进阶版计算器
if __name__ == "__main__":
    advanced_time_calculator()